Programmable impedance elements can include, but are not limited to: conductive bridging random access memory (CBRAM) type elements, magneto-resistive RAM (MRAM) type elements, and phase change memory (PCM) type elements. Such elements are typically programmed by applying electrical conditions to vary their resistance, current or voltage response.
Conventionally, the speed at which elements can be read can be limited by the need to prevent disturbance of the element's state. For example, while increasing the read voltage applied to a CBRAM element can increase the speed at which data is read, if such a read voltage is too high, the CBRAM element can be unintentionally programmed (changing the stored data value in the event the element was in an erased state). That is, too high a read voltage can result in a destructive read.
Similarly, a speed at which data can be written into an element can be limited. While a large programming voltage can change an element's resistance rapidly, an ending resistance may vary significantly between elements. This can make it difficult to arrive at a desired common end resistance value, without some additional programming steps.